Call centers receiving calls for support may have an automated system that can route the calls to an appropriate agent. However, the development and maintenance of the routing rules for such systems is expensive and time consuming. In many systems, to keep the cost down, the routing rules are very general. The result is that the customer is often routed to an agent that is unable to help the customer and has to transfer the customer to the correct agent, which costs time and money for the company and can leave the company with an angry customer. For example, a customer routed to an incorrect agent may be connected with the agent, spend 30 seconds explaining the issue to the agent, be told that the agent needs to transfer the customer, wait for an appropriate agent to help the customer, and spend another 30 seconds explaining the issue again. Even the 30 seconds spent by the agent listening to the customer just to decide he or she cannot help the customer, when multiplied by thousands of calls each day, turns into millions of lost dollars for the company. In addition, the customer is angry or annoyed that he had to repeat the issue to more than one agent to get a resolution. In other cases, the routing rules are more sophisticated and tailored to the company, but they are expensive to develop and maintain. Implementation of tailored systems can cost a company hundreds of thousands of dollars to set up and thousands of dollars monthly to maintain. And if the maintenance is not handled, the customers may be incorrectly routed, which results in the same issues discussed above. Accordingly, an improved system is needed for routing customers to agents in call centers.